package com.panshi.service.impl;

import com.panshi.mapper.IHotnewsMapper;
import com.panshi.pojo.Hotnews;
import com.panshi.service.IHotnewsService;
import com.panshi.utils.RedisUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Service
public class HotnewsServiceImpl implements IHotnewsService {

    @Autowired
    IHotnewsMapper iHotnewsMapper;


    @Autowired
    RedisUtil redisUtil;

    @Override
    public Set<Hotnews> queryCommentsList() {
        if (getHotnewsList() != null) {
            return getHotnewsList();
        }
//        没有从数据库拿 更新缓存
        update();
        return getHotnewsList();
    }

    @Override
    public void addHot(Integer cid) {
//        新闻添加热度
        iHotnewsMapper.addHot(cid);
//        更新
        update();
    }

    //    更新缓存
    @Override
    public void update() {
        redisUtil.del("hotList");
        Set<Hotnews> hotnews = iHotnewsMapper.queryCommentsList();
        for (Hotnews hot : hotnews) {
            redisUtil.zset("hotList", hot, hot.getHeat());
        }
    }

    //添加新闻
    @Override
    public void addNews(Hotnews hotnews) {
        iHotnewsMapper.addNews(hotnews);
        //        更新
        update();
    }

    @Override
    public void newsDel(Integer cid) {
        iHotnewsMapper.newsDel(cid);
        //        更新
        update();
    }

    //查询指定新闻
    @Override
    public Hotnews getNewsByCid(Integer cid) {
        return iHotnewsMapper.getNewsByCid(cid);
    }

    @Override
    public void updatenews(Hotnews hotnews) {
        iHotnewsMapper.updatenews(hotnews);
        //        更新
        update();
    }

    public Set<Hotnews> getHotnewsList() {
        Set<Object> hotList = redisUtil.zReverseRange("hotList", 0, -1);
//        查询redis是否有数据
        if (!hotList.isEmpty()) {
            return (Set) hotList;
        }
        return null;
    }


}
